約 5,222,078 件
https://w.atwiki.jp/hitkik/pages/18.html
インストーラ xampp http //phpspot.net/php/pgXAMPP%82%CC%83C%83%93%83X%83g%81%5B%83%8B.html http //blog.cles.jp/item/1457 php入門 php関数リファレンス phpでメール エラーチェックを強制 error_reporting (E_NOTICE); 入門 日付表示 ?php echo date("Y/m/d"); ? 定数 定数定義: define("定数名", "値"); 使うときには 定数名 だけでOK 文字列定数 ダブルコーテーション "初心者のための PHP入門" シングルコーテーション 初心者のための PHP入門 ヒアドキュメント END 変数・配列 変数は、先頭に$をつける。0-9A-Za-z, 0x7F-0xFF, _が使える。 配列は、$配列名[添え字] 添え字は0から始まる。 array(要素1,要素2、、、) : 要素を配列化する。 連想配列 array("要素名" = 値1,,,,) ?php $fruit = array("Apple" = "りんご", "Orange" = "みかん", "Grape" = "ぶどう"); while(list ($key, $val) = each($fruit)) { print ("インデックスの $key は、$val です br \n"); } ? 型 boolean integer 32bit signed int float 14桁の数値 string " " or 文字列長制限なし。 文字列の先頭が数字なら、演算可能(自動変換) 演算 + - * / % (剰余) == = = != . 文字列の連結 || and or xor ! 条件判断 elseif に注意。eが入る。 if (cond) { } elseif (cond) { } else { } switch(変数) { case "val1" operation; break; default operation; } ループ while(cond) { } for ( ; ; ;) { } do { } while (cond); break; 連想配列の要素のループ foreach (配列 as $key = $value) { print ("$key, $value");} breakできない。 文字列関数 array(要素1,要素2、、、) : 要素を配列化する。 explode(セパレーター, 文字列) 文字列をセパレーターで分割し配列を返す。 str_replace("検索文字列","置換文字列","元の文字列"); 関数定義 function 関数名(引数 = デフォルト値) { 処理; retrurn(返り値); } 引数 で、参照渡しになる。 オブジェクト指向 オブジェクト定義 class Shopping { var $item = "コンピュータ"; var $price = 99800; // ここまでメンバ変数の設定 function getTotal() { $tax = $this- price * 0.05; return $this- price + $tax; } // ここまでメソッドの定義 } オブジェクト生成 生成 $newShopping new Shopping(); 参照 $item = $newShopping- item 日付関数 unixtojd()UNIX時間(1790年1月1日からの秒数)をユリウス日に変換する jdtounix()ユリウス日を UNIX時間に変換する JDToJulian()ユリウス日をユリウス暦に変換する JulianToJD()ユリウス暦をユリウス日に変換する getdate()関数 ローカル時間(局地的な時間の意味で、世界各国のそれぞれの地域の時間を表す)を参照するには、getdate()関数 を使います。この関数には 連想配列として、以下のようなインデックスが定義されています。 second ---- 現在の秒を定義する mimutes --- 現在の分定義する hours ----- 現在の時定義する mday ------ 現在の月次の日付を定義する wday ------ 現在の曜日番号を定義する mon ------- 現在の月を定義する year ------ 現在の年を定義する yday ------ その年の通算日を定義する weekday --- 現在の曜日の文字列を定義する month ------- 現在の月の文字列を定義する ?php $today = getdate(); print("$today[year]年$today[mon]月$today[mday]日 br \n"); print("今年1月1日から $today[yday]日目です br \n"); print("$today[weekday] $today[month]/$today[mday]/$today[year]"); ? date関数(書式指定付き) ?php $today = date("Y/m/d l H i s"); print($today); ? a --------- am または pm を定義する A --------- AM または PM を定義する d --------- 2桁の日付を定義する D --------- 3文字の曜日 (Sun ~ Sat) を定義する F --------- フルスペルの英字で月を定義する h --------- 12時間単位 (00 ~ 12) の時間を定義する H --------- 24時間単位 (00 ~ 23) の時間を定義する g --------- 先頭に 0 をつけない12時間単位 (0 ~ 12) の時間を定義する G --------- 先頭に 0 をつけない24時間単位 (0 ~ 23) の時間を定義する i --------- 2桁の分 (00 ~ 59) を定義する j --------- 先頭に 0 をつけない (0 ~ 31)の日を定義する l --------- フルスペルの英字で曜日を定義する L --------- 閏年では 1 を、それ以外は 0 を返す n --------- 先頭に 0 をつけない (0 ~ 12) の月を定義する m --------- 2桁のの月 (01 ~ 12) を定義する M --------- 3文字の月 (Jan ~ Dec) を定義する s --------- 2桁の秒 (00 ~ 59) を定義する S --------- 英文の序数を表わす接尾語 (th ~ nd) を定義する t --------- 指定した月の日数 (28 ~ 31) を定義する U --------- UNIX時間 (1970年1月1日からの秒数) を定義する w --------- 数値で示す曜日 (0 ~ 6) を定義する y --------- 西暦の下2桁を示す年を定義する Y --------- 西暦を4桁で示す年を定義する z --------- その年の1月1日からの通算日を定義する Z --------- タイムゾーンのオフセット秒 ( -43200 ~ 43200まで) 画像描画 (PHPにライブラリ GDが必要) jpeg, pngが使える。PHP4ではGIFは使えない。 PHP文書そのものが画像の扱いとなる。 領域作成 ?php header("content-type image/png"); $image = imagecreate(100,100); # 横、縦サイズ $back = imagecolorallocate($image, 0, 0, 0); $red = imagecolorallocate($image, 255, 0, 0) imagepolygon( $image, array( 10, 80, 80,80, 80, 10 ), 3, $red ); imagepng($image); # ブラウザに出力 imagedestroy($image); ? 以下広告
https://w.atwiki.jp/civilizationv/pages/31.html
PHP Hypertext Preprocessor http //www.php.net/ http //jp2.php.net/ (日本のミラーサイト) 日本PHPユーザー会 (Japan PHP User Group) http //www.php.gr.jp/
https://w.atwiki.jp/croquette/pages/22.html
Making Medical Decisions Nishitarumizu 2001.3.9 1. Make a clinical estimate (before testing) of the likelihood of the disease as odds. Clue Odds = Probability /(1- Probability) How do we come up with pre-test probability? Careful history and physical examination, and a few simple labs Knowledge Epidemiology, History (age,gender, prevalence, natural course…) Traditional? textbooks ,studies (Table 1), report Experience Many cases? (last case?) Judgement Clinical reasoning (Heuristics…) 2. Estimate or calculate the action threshold for the treatment you would advise. Use your patient s subjective preferences in estimating the impact of the various outcomes. Clue Harm = Probability of harm times its impact score Clue Improvement = Probability of improvement of disease multiplied by its impact score. Clue Action threshold = Harm / Improvement (as probability) 3. Select the test that best suits the scenario if more than one test is available. Seek the test that has the greatest power to change your mind; if your pre-test estimate is above the action threshold , choose the test with the lowest negative likelihood ratio (rule-out). If it is below the action threshold, select the test with the highest positive likelihood ratio(rule-in). These are just the "numbers". If a given test entails disutility such as great cost, risk, pain, or other negative implications, clinical judgment (the final arbiter of all things clinical ) may rightfully override the mathematically "correct" decision in favor of a more humane one. How do we keep up to date with the best evidence concerning tests? Texts such as Ref.2 Electronic texts Best Evidence… Internet PubMed "Clinical Queries" 4. Calculate what the post-test estimates of likelihood would be if the test results were positive and if the test results were negative. Clue Post-test Odds = Pre-test Odds × Likelihood Ratio Positive Likelihood Ratio = LR+ = Sensitivity/(1-Specificity) Negative Likelihood Ratio = LR- = (1- Sensitivity) / Specificity Sensitivity PID , SnNout Specificity NIH ,SpPin Multilevel likelihood ratios (Table 2) Sequential tests 5. If your test would take you from below the action threshold (pre-test odds) to above the action threshold ( post-test odds) or from above the action threshold to below the action threshold, go ahead and test. If it would not do so, there is no point in testing because the test results would not change your mind. 6. Based on the actual test result, if your post-test estimate of disease likelihood is above the action threshold, treat. If below, observe. (例題) A氏が36時間持続する咽頭痛のため来院した.身体所見では38.5℃の発熱と両側の扁桃の 滲出物がみられたが、リンパ節腫脹やその他所見はみられなかった.その他の病歴にも異常 はみられなかった. あなたは以下について考える. 1. 対症療法だけやろうか?何もしないでおくか? 2. 簡易溶連菌検査をやってこれで判断しようか? 3. 検査しないで抗生剤を出しちゃおうか? Step-1 Pretest estimate 臨床所見からは溶連菌性の扁桃炎である可能性は20%.(Table 3 or Ref.2) 咽頭痛のみで熱、扁桃滲出物、前脛部リンパ節腫張のどれもなければ3%未満だが、 前脛部の圧痛を伴うリンパ節腫張があれば、40%以上の確率で溶連菌性の扁桃炎である. Pre-test probability 20% Pre-test Odds 0.25 Step-2 Estimating the action threshold Harm 経口ペニシリンの下痢や皮疹がでる確率は4%.アナフィラキシーの確率は非常に 低い(1/200,000)ので無視できる.その他の副作用1%としても、 Harm frequency 5% Harm impact =0.1 (0-1) Improvement 経口ペニシリンで改善する確率はほぼ100%.これにより溶連菌後腎炎や リウマチ熱の頻度は減るが、これらの頻度は一般には成人では非常に少ないとされている. (小児でも0.4%)そのため治療によるimpactは個人により変動する.例えば元気な学生では 多少の下痢や皮疹はあまり問題にならないのでそのimpactは0. 1ぐらいかもしれないが、 慢性疾患のある高齢者では食事がとれずその効果のimpactは0.9かもしれない. Improvement frequency 100% Improvement impact =0.1 Action threshold= Harm/Improvement = (0.1× 0.05)/ (0.1×1) =0.05 5% Step-3 Assessing Testing 今自分のPre-test probability が20%で、Action thresholdの5%を超えているので 単純に治療したくなるが、ここで検査を行うことで今の自分の気持ちが変わるかどうか を考えてみる.(検査が必要かどうか) 咽頭培養の溶連菌性扁桃炎における感度Sensitivityは90%で、特異度Specificityは85%で ある.すると、(Figure 1) Positive Likelihood Ratio = Sensitivity /(1-Specificity) = 6 Negative Likelihood Ratio = (1- Sensitivity) / Specificity = 0.12 なので Post-test estimate of likelihood (if positive) = 67% Odds 1.5 Post-test estimate of likelihood (if negative) = 3% Odds 0.03 Step-4 Interpreting the test results. もし咽頭培養が陰性なら自分のPre-test probabilityは20%から3%まで低下するため、 Action thresholdの5%を下回ることとなり、この場合治療による危険度のほうが高くなる. (検査の結果によって自分の気持ちが変わり得る) Step-5 Confirming the pre-test estimate. 検査によって自分の考えが変わるということは、自分のpre-test estimateの考え方が正しく なかった可能性はないだろうか? ここで検査を行うかどうか考え、pre-test estimateをもう一度考えることが、今後の自分の 臨床能力をあげることにつながるのでは? (Figure 1) A likelihood ratio nomogram References 1. Making Medical Descisions An approach to clinical decision making for practicing physicians. Richard Gross ACP 2. Diagnostic strategies for common medical problems 2nd. ACP 3. Evidence-based Medicine D.L. Sackett 2nd 4. Learning Clinical Reasoning (Table 3) Strep pharyngitis probability score Score Interpretation 0 0.64% probability 1 1.71% probability 2 4.53% probability 3 11.42% probability 4 25.95% probability 10 1.34% probability 11 3.55% probability 12 9.1% probability 13 21.39% probability 14 42.52% probability 20 2.96% probability 21 7.65% probability 22 18.38% probability 23 37.97% probability 24 62.47% probability Tonsillar exudate? Yes (1 points) No (0 points) Swollen or tender anterior cervical lymph nodes? Yes (1 points) No (0 points) Fever? Yes (1 points) No (0 points) Absence of cough (except in smokers)? Yes (1 points) No (0 points) Prevalence of group A strep pharyngitis in patient s community 5% (0 points) 10% (10 points) 20% (20 points)
https://w.atwiki.jp/dissidia012/pages/13.html
途中からです Odin Seeking assistance? Then I shall split your enemies in two. Light So a fairy tale aims to assist me? Odin I shall not answer your call; I ride as I please... Light Fine. Then let s go. Light I should probably prepare before heading on. Cutscene Cosmos Lightning... Lightning I guess the rest of em still haven t made it back here yet. The fighting out there...it s something else. Those things, those manikins… they just keep coming. And every one of ‘em wants us dead. And Kain… I don’t know what he’s after, but hels turned on us, and now he’s attacking his own allies. I got separated from the others. I’m not sure they even managed to get out. WOL Cosmos? Cosmos It’s Jecht… I felt his spirit growing weaker, and then…it vanished. WOL Vanished? So he was slain by one of Chaos’s fiends. Lightning I wouldn’t bet on it. They have someone on the inside doing their work for ‘em. Cosmos You think…Kain did it? Lightning Jecht’s not the only one he’s gotten to. I saw him with my own eyes. I saw the friend he’d already betrayed, and I saw him try to claim his next victim too. Cosmos You must be mistaken. I can sense all of the other warriors are still― Lightning The other warriors aren’t coming! Listen to me. Two of us made it out of that mess alive, and you’re right at ‘em! We keep taking orders from you, and we can forget about the crystals. We won’t last that long! Of all the stupid things to die for… WOL You are absolutely correct. We cannot win. Cosmos No… Lightning You too… Just like Kain, huh? Another traitor! What do you even want? WOL I am afraid that does not concern you at present. <対 ウォーリアオブライト戦> WOL Toss aside your blade, and say good night. Lightning No thanks. It’s not my bedtime. Cosmos Stop! You mustn’t fight! Hear me, warriors. Stay your blades. Speak. You know more than you reveal. WOL My pardons. I meant to speak to you about Kain later. This fight, you see… Kain and I… We’ve yielded. Lightning What does that mean? No sooner had Cosmos imbued us with her power than the twisted warriors we came to know as manikins appeared in this world. An endless spring of military might, directed by the forces of Chaos. For each we would slay, two more would take its place. Had we so chosen, we cloud have battled until our last ounce of strength was drained. There was one thing, however, that we knew we could never do win. And the longer we fought, the more painfully apparent that became. WOL (It’s no use… No matter how many fall, There is always another wave.) (What kind of numbers must these abominations have?) Kain! Kain My friend. You’re unscathed. WOL Yes… But breaks in the fighting are few and far between. I can only hope the others have fared as well. Kain Manikins… Hm. WOL What of them? Kain I wonder. How do you place our odds? Against numbers like these, do you think we actually stand to win? WOL I cannot speak for the outcome, but we can fight as long as we have strength. Kain That’s one answer. You are correct. We can fight for as long. as we have strength, and almost certainly lose. But IF! IF there were a way to make winning possible, by accepting that loss as inevitable… Would you be able to commit yourself to such a purpose? WOL What do you mean? Kain We are trapped. This war is a cycle with no proper end. We fight and fall, we are revived, and the process repeats. WOL I realize it’s not easy to believe. Kain But consider. If what I’ve said to you is true, then so is this We’ll have another chance. As long as some of our strength remains, we will be brought back and provided with a chance to fight again. Lightning You’re taking down your own allies and putting them to sleep so they’ll get revived? You expect me to buy into that? You don’t think we can win, so you think we should just lose on purpose!? WOL I do. It is our only hope of success. Lightning Where do you even dream up a fairy tale like that!? Look… Even if what you’re saying wasn’t completely crazy, what’s the point in getting revived so we can keep fighting an endless war? I mean… if this war isn’t gonna end… …why even fight? What in the world are we doing here? WOL Making the war end. Is that not correct, Cosmos? We are here to use the power Cosmos has granted us, our crystals, to bring the cycle grinding to a halt. But as matters stand, we are doomed to fail before we can even obtain them. “Manikins are merciless.” “They know only how to deliver death and destruction, from which there can be no return.” ??? If we do not embrace the cycle, the crystals will never be ours to wield. Leguna Not exactly uplifting. Yuna We don’t even have the time to consider our options. WOL It was my hope that you would journey onward, to face the next battle. Yuna And you? What are you going to do? WOL I’ve sworn an oath to Kain. While he puts the other warriors to sleep, I am to serve as his shield. Leguna Are you guys, like, brothers in arms, to the bitter end? WOL Whatever hope we have rests upon you and the next fight. Sometimes you must lose a battle to win the war. Please try to accept this. The crystals are our only hope. Lightning You’re wrong. The two of you can do whatever you want. But don’t go asking me to believe in this crap. Me… I make my own fate. I’ll keep looking for hope until I find some. WOL Lightning… Lightning Say your “next battle” were to start now. There wouldn’t be any fewer enemies out there. And starting over fresh doesn’t guarantee we’d get our crystals any faster either. At the very least, we might as well cut their numbers down first. It sure can’t hurt, can it? And it might just give us a shot. Leguna Guess now’s as good a time as any. Just happens I’ve got some intel that might change the whole game. You wanna even our odds? Try this on I know where the manikins are coming from. Well, more “how to find where they come from”. But if you wanna go lookin’, I’m up for it. Lightning You are? Vaan You know… I’m in too. I promised to help end this thing, and that’s what I’m gonna do. I’m not givin’ up now. I’m finishing what I started. We’ve got better things to do than napping. Lightning Vaan… Yuna I’m coming too. I can’t just sleep here while you’re all out fighting. I can’t turn my back on people like that. If I can help, then I’ll keep fighting. Cosmos Yuna… WOL The road you choose is no easy one. You would still walk it, knowing what you face? Very well. Then I shall place my hope and trust in you. Leguna Well then. Guess it’s a date! Looks like we’ve got some manikins to disassemble.
https://w.atwiki.jp/omisono_php/pages/32.html
PHPの文字列送信を受け取る方法 PHPの文字列送信を受け取る方法 これについてはぜんぜん知らなかったので、使ったこともないですが、下記のとおりのようだ。 ?php print "$get" ? という内容を、PHPが有効なサーバの適当なディレクトリに、samp.phpという名前で保存します。次に、ブラウザのアドレス欄に、http //○○ /samp.php?get=Testと入力します。そうすることにより、samp.phpはブラウザ上にTestという文字列を出力するのです。ただし、「GET」で直接サーバに送信できる文字は半角英数字だけとなっています。日本語等マルチバイト文字を「GET」で送信したい場合は、HTTPエンコードをする必要があります。具体的には「urlencode()」関数や「rawurlencode()」関数を使うことによって、簡単に HTTPエンコードする事ができます。また、「POST」では日本語フィールドも自動的にHTTPエンコードされて送信されます。受け取り側はフォーム内で指定した「name」の値を変数名として受け取ります。 ただし、PHP4.2.0以降のバージョンでは、デフォルトのままで「$変数名」と言う形での外部データ取得が不可能となっています。セキュリティ強化措置ではあるらしいですが、この設定を変えてやりたい場合にはPHP設定ファイルである「php.ini」の設定を下記のように変更します。 register_globals = On
https://w.atwiki.jp/m_shige1979/pages/1586.html
nginx+php5.5+php-fpm 概要 nginx+php5.5+php-fpmの環境設定手順 環境 CentOS6.x 64bit 手順 # nginxをインストール wget http //nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm rpm -ivh nginx-release-centos-6-0.el6.ngx.noarch.rpm vim /etc/yum.repos.d/nginx.repo ---- [nginx] name=nginx repo baseurl=http //nginx.org/packages/centos/6/$basearch/ gpgcheck=0 enabled=1 ---- # インストール yum install -y nginx # 基本設定ファイル編集 vim /etc/nginx/nginx.conf ---- user nginx; worker_processes 2; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for" ; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip設定; gzip on; gzip_types text/plain text/xml text/css text/javascript image/x-icon application/xml application/rss+xml application/json application/x-javascript; gzip_disable "MSIE [1-6]\."; gzip_disable "Mozilla/4"; # トークン他 server_tokens off; ignore_invalid_headers on; # 設定ファイル読み込み include /etc/nginx/conf.d/*.conf; } ---- # 自動起動、再起動 service nginx start chkconfig nginx on # phpenvをインストール cd curl https //raw.github.com/CHH/phpenv/master/bin/phpenv-install.sh | sh echo export PATH="$HOME/.phpenv/bin $PATH" ~/.bash_profile echo eval "$(phpenv init -)" ~/.bash_profile source ~/.bash_profile which phpenv mkdir -p ~/.phpenv/plugins cd ~/.phpenv/plugins git clone git //github.com/CHH/php-build.git chmod 755 php-build/bin/rbenv-install phpenv install usage phpenv install VERSION Available versions 5.2.17 5.3.10 5.3.11 いろいろ 5.5.5 5.5snapshot master yum --enablerepo=epel install re2c libmcrypt libmcrypt-devel yum install libxml2-devel bison bison-devel openssl-devel curl-devel libjpeg-devel libpng-devel libmcrypt-devel readline-devel libtidy-devel libxslt-devel httpd-devel enchant-devel libXpm libXpm-devel freetype-devel t1lib t1lib-devel gmp-devel libc-client-devel libicu-devel oniguruma-devel net-snmp net-snmp-devel bzip2-devel vim /root/.phpenv/plugins/php-build/share/php-build/definitions/5.5.5 ---- configure_option "--with-apxs2=/usr/sbin/apxs --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --enable-fileinfo --enable-hash --enable-json --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-bcmath --with-bz2 --enable-ctype --with-iconv --enable-ftp --with-gettext --enable-mbstring --with-onig=/usr --with-pcre-regex --with-mysql=mysqlnd --with-mysql-sock=/tmp/mysql.sock --enable-phar --enable-shmop --enable-sockets --enable-simplexml --enable-dom --with-libxml-dir=/usr --enable-tokenizer --with-zlib --with-kerberos=/usr --with-openssl=/usr --enable-soap --enable-zip --with-mhash=yes --without-mm --with-enchant=/usr --with-zlib-dir=/usr --with-gd --enable-gd-native-ttf --with-gmp=/usr --with-jpeg-dir=/usr --with-xpm-dir=/usr/X11R6 --with-png-dir=/usr --with-freetype-dir=/usr --with-imap=/usr --with-imap-ssl --enable-intl --with-t1lib=/usr --with-mcrypt=/usr --with-snmp=/usr" install_package "http //www.php.net/distributions/php-5.5.5.tar.bz2" install_pyrus install_xdebug "2.2.3" enable_builtin_opcache ---- # install phpenv install 5.5.5 # モジュールをコピー cp /etc/httpd/modules/libphp5.so /root/.phpenv/versions/5.5.5/libphp5.so phpenv rehash phpenv global 5.5.5 php -v # php-fpm mkdir /var/log/php-fpm chown -R nobody nobody /var/log/php-fpm cp -f /tmp/php-build/source/5.5.5/sapi/fpm/php-fpm.conf /usr/local/etc/php-fpm.conf # サービス用起動スクリプトをコピー cp -f /tmp/php-build/source/5.5.5/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm chmod 755 /etc/init.d/php-fpm chkconfig php-fpm on # /etc/init.d/php-fpmを編集してconfファイルの場所を変更する ---- # php_fpm_CONF=${prefix}/etc/php-fpm.conf ↓ php_fpm_CONF=/usr/local/etc/php-fpm.conf ---- # php-fpm.confを編集 vim /usr/local/etc/php-fpm.conf ---- [global] pid = run/php-fpm.pid [www] user = nginx group = nginx listen = 127.0.0.1 9000 listen.owner = nginx listen.group = nginx listen.mode = 0666 pm = dynamic pm.max_children = 8 pm.start_servers = 4 pm.min_spare_servers = 2 pm.max_spare_servers = 4 pm.max_requests = 500 ---- # 起動 service php-fpm start chkconfig php-fpm on # ログとドキュメントのディレクトリを作成 mkdir -p /var/log/nginx/dev1.example.com mkdir -p /var/www/html/dev1.example.com/public # nginxファイル作成 vim /etc/nginx/conf.d/dev1.example.com.conf ---- server { # ポート、サーバネーム listen 80; server_name dev1.example.com; # アクセスログ、エラーログ access_log /var/log/nginx/dev1.example.com/access.log main; error_log /var/log/nginx/dev1.example.com/error.log; # ドキュメントルート root /var/www/html/dev1.example.com/public; # indexファイル index index.php index.html index.htm; # phpの処理 location ~ \.php$ { fastcgi_pass 127.0.0.1 9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # アクセスを制限する location ~ (\.htaccess|\.git|\.svn) { deny all; } # 文字コード charset utf-8; } ---- # 再起動 service nginx restart service php-fpm restart # 簡単なファイルを配置して確認 echo " ?php echo test ; phpinfo();" /var/www/html/dev1.example.com/public/index.php
https://w.atwiki.jp/littlevoice/pages/23.html
インストール apt-get install php php-devel php-pear php-apache php-5.2.3ビルドエラーに関して undefined reference to `libiconv undefined reference to `libiconv_open undefined reference to `libiconv_close エラーが出てmake出来ない。 対処法 ― www.phppro.jp/qa/487 Makefileに追加 EXTRA_LIBS = -liconv ln -s /usr/local/lib/libiconv.so.2.4.0 /usr/lib/libiconv.so.2 ソースインストールについて ― dan.drydog.com/apache2php.html
https://w.atwiki.jp/sakuba/pages/11.html
アクセスカウンター AC.PHP ? # ***************************************************** # このソースコードは、EUC-JP で記述されています # ***************************************************** header( "Content-Type text/javascript; Charset=shift_jis" ); header( "Expires Wed, 31 May 2000 14 59 58 GMT" ); ini_set( display_errors , "1" ); function inc( $path ) { $inc = @file( $path ); array_shift($inc); array_pop($inc); $GLOBALS[ inc_eval_txt ] = implode( "", $inc ); eval($GLOBALS[ inc_eval_txt ]); } $conf_client_charset = "euc-jp"; $conf_db_type = 1; $conf_db_connect_action = "set names ujis "; inc( "http //homepage2.nifty.com/lightbox/gen/db.php" ); $target = "http //localhost/php/"; if ( substr( $_SERVER[ HTTP_REFERER ], 0, strlen( $target ) ) == $target ) { $SQL = new DB( "localhost", "land", "root", "" ); $Query = "update アクセス set count = count + 1"; $SQL- Execute( $Query ); $Query="select * from アクセス"; $Column = $SQL- QueryEx( $Query ); $cnt=$Column[0]; $SQL- Close; } else { $cnt = アクセスできません ; } $font_path = "./7barP.ttf"; # ******************************************************* # 内部コードは、UTF-8 ( EUC-JP でも良い ) #******************************************************** mb_language( "ja" ); mb_internal_encoding( "UTF-8" ); # ******************************************************** # 対象文字列 # ******************************************************** $img_text = $cnt; $img_text = mb_convert_encoding( $img_text , "UTF-8" , "EUC-JP" ); # ******************************************************* # キャンバス作成 # ******************************************************* $im = imagecreate( 150, 30 ); # ******************************************************* # 画像の背景色 # imagecolorallocate() の最初のコールで背景色がセットされます # ******************************************************* $white = imagecolorallocate( $im, 255, 255, 255 ); # ******************************************************* # 画像の文字色 # ******************************************************* $black = imagecolorallocate( $im, 0, 0, 0 ); imagettftext( $im, 20,# サイズ 0,# 角度 5,# x 座標 22,# y 座標 $black, $font_path, $img_text); # ******************************************************* # PNG 出力 # ******************************************************* imagepng($im); # ******************************************************* # 終了処理 # ******************************************************* imagecolordeallocate( $im, $black ); imagecolordeallocate( $im, $white ); imagedestroy($im); ? HTML埋め込み IMG src="./AC.php" border="0" galleryimg="no" / Google検索設置 Google.PHP ? header( "Content-Type text/javascript; Charset={$_GET[ charset ] }" ); header( "Expires Wed, 31 May 2000 14 59 58 GMT" ); if ( $_GET[ charset ] == ) { $_GET[ charset ] = EUC-JP ; } mb_language( "ja" ); mb_internal_encoding("EUC-JP"); $KJ1 = 検索 ; $KJ2 = を検索 ; if ( strtoupper( $_GET[ charset ] ) == SHIFT_JIS ) { $KJ1 = mb_convert_encoding( $KJ1, "SHIFT_JIS", "EUC-JP" ); $KJ2 = mb_convert_encoding( $KJ2, "SHIFT_JIS", "EUC-JP" ); } if ( strtoupper( $_GET[ charset ] ) == UTF-8 ) { $KJ1 = mb_convert_encoding( $KJ1, "UTF-8", "EUC-JP" ); $KJ2 = mb_convert_encoding( $KJ2, "UTF-8", "EUC-JP" ); } ? str= ; str+=" form target=\"_blank\" method=get action=\"http //www.google.co.jp/search\" "; str+="\n table bgcolor=\"#FFFFFF\" tr valign=top td "; str+="\n a href=\"http //www.google.co.jp/\" "; str+="\n img src=\"http //www.google.com/logos/Logo_40wht.gif\" "; str+=" \nborder=\"0\" alt=\"Google\" align=\"absmiddle\" /a "; str+="\n /td \n td \n input type=text "; str+="name=q size=31 maxlength=255 value=\"\" \n input "; str+="type=hidden name=ie value= ?= $_GET[ charset ] ? \n input "; str+="type=hidden name=oe value= ?= $_GET[ charset ] ? \n input "; str+="type=hidden name=hl value=\"ja\" \n input "; str+="type=submit name=btnG value=\"Google ?= $KJ1 ? \" "; str+="\n font size=-1 \n input type=hidden "; str+="name=domains value=\" ?= $_GET[ domain ] ? \" br "; str+="\n input type=radio name=sitesearch value=\"\" "; str+="WWW ?= $KJ2 ? \n input type=radio name=sitesearch "; str+="value=\" ?= $_GET[ domain ] ? \" checked ?= $_GET[ title ] ? "; str+=" ?= $KJ2 ? \n /font \n /td /tr /table "; str+="\n /form \n "; document.write( str ); HTML埋め込み SCRIPT language="javascript" type="text/javascript" src="ディレクトリパス/Google.php" /SCRIPT
https://w.atwiki.jp/knowledge_library/pages/62.html
php.ini output_buffering = Off output_handler = none default_mimetype = "text/html" default_charset = UTF-8 ;;;;;;;;;;;;;;;;;;;;;; ; Dynamic Extensions ; ;;;;;;;;;;;;;;;;;;;;;; zend_extension="/usr/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so" ;use xdebug ;extension=php_bz2.dll ;extension=php_curl.dll ;extension=php_fileinfo.dll ;extension=php_gd2.dll ;extension=php_gettext.dll ;extension=php_gmp.dll ;extension=php_intl.dll ;extension=php_imap.dll ;extension=php_interbase.dll ;extension=php_ldap.dll extension=php_mbstring.dll ;extension=php_exif.dll ; Must be after mbstring as it depends on it extension=php_mysql.dll ;extension=php_mysqli.dll ;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client ;extension=php_oci8_11g.dll ; Use with Oracle 11g Instant Client ;extension=php_openssl.dll ;extension=php_pdo_firebird.dll ;extension=php_pdo_mssql.dll extension=php_pdo_mysql.dll ;extension=php_pdo_oci.dll ;extension=php_pdo_odbc.dll ;extension=php_pdo_pgsql.dll ;;;;;;;;;;;;;;;;;;;;;;;;; ; Paths and Directories ; ;;;;;;;;;;;;;;;;;;;;;;;;; ;include and extension include_path = "/usr/include/php/include" extension_dir = "/usr/include/php/ext" ;default timezone [Date] date.timezone = Asia/Tokyo ;pdo [Pdo_mysql] pdo_mysql.default_socket=/opt/local/var/run/mysql5/mysqld.sock ;mbstiring [mbstring] mbstring.language = Japanease mbstring.encoding_translation = On mbstring.http_input = auto mbstring.http_output = UTF-8 mbstring.internal_encoding = UTF-8 mbstring.substitute_character = none xdebug [xdebug] xdebug.idekey="macgdbp" xdebug.remote_enable=1 xdebug.remote_handler="dbgp" xdebug.remote_mode=req xdebug.remote_host="localhost" xdebug.remote_port=9000 xdebug.remote_log="C \php5\logs\xdebug.log" xdebug.manual_url = http //jp2.php.net xdebug.collect_params = On xdebug.dump.GET = * xdebug.dump.POST = * error error_reporting = E_ALL ~E_DEPRECATED display_errors = On ;error_log = syslog //運用時に使用する項目 [Session] session.save_handler = files session.save_path = "/tmp/" session.use_cookies = 1 session.use_only_cookies = 1 session.name = PHPSESSID session.auto_start = 0 session.cookie_lifetime = 0 //開発環境では0 運用時は30~1h程度? session.cookie_path = / session.cookie_domain = http //php_application_demo.com session.cookie_httponly = 1 session.serialize_handler = php
https://w.atwiki.jp/swdp2p2/pages/13.html
PHP基礎知識文字列の結合 関数定義 条件文のtrueとfalseの省略記述 MDB2データベースへの接続 データの取得 データの書換え 検出数 暗号化hash関数 crypt関数 セッションセッションの基本 SmartySmarty基本 PHP 基礎知識 文字列の結合 ?php $a = "ポアソン" ; $b = "分布" ; // $aと$bを結合する $c = $a . $b; // 結果の出力 print($c); ? 文字列を結合するには.(ドット)を用います。文字列の結合は複数でも可能です。 出力結果ポアソン分布 関数定義 関数はfunction 関数名(引数){記述文}で定義できます。 返り値の型がない代わりにfunctionがついたC言語の関数と考えれば特に難しくはありません。 関数の例は以下のとおりです。 ?php // 文字列の出力関数 function Disp($string) { print($string);} // 文字列を返す関数 function GetString() { $string = "GetStringの文字列" return $string;} ? 条件文のtrueとfalseの省略記述 システムにより依存はありますが、基本的にtrue = 0以外, false = 0です。 if文などでよく if($isExist){...} などと変数名(ここでいう$isExist)のみの記述があります。 これは、$isExistがtrueならば実行すると言う意味です。 この意味はwhile文の無限ループを思い出してもらえれば簡単だと思います。 無限ループは、while(1){...} のように記述します。別に条件文が1である必要はありません。0以外の数値であればよいのです。 つまり、これはwhile(true)を意味しています。 ですので、$isExistがtrueの場合、if($isExist){...} は if(true){...}と解釈されます。 MDB2 データベースへの接続 ?php // ライブラリの読込み require_once "MDB2.php" ; // データベースへ接続 $mdb2 = MDB2 connect( "mysql //ユーザ名 パスワード@ホスト/データベース名" ); // エラー処理 if(PEAR isError($mdb2)) { die($mdb2- getMessage()); } // データベースへの接続を切る $mdb2- disconnect(); ? データの取得 ?php // ライブラリの読込み require_once "MDB2.php" ; // データベースへ接続 $mdb2 = MDB2 connect( "mysql //ユーザ名 パスワード@ホスト/データベース名" ); // エラー処理 if(PEAR isError($mdb2)) { die($mdb2- getMessage()); } // クエリを実行 $res = $mdb2- query( "SELECT * FROM データベース名" ); // エラー処理 if(PEAR isError($res)) { die($res- getMessage()); } // テーブルの最初の要素を出力する while( ($row = $res- fetchRow()) ) { print($row[0]. " br " ); } // データベースへの接続を切る $mdb2- disconnect(); ? テーブルの要素を求めるにはqueryを使用します。 $res = $mdb2- query("SELECT 必要な情報を取り出す記述"); 上記の例では全ての要素を取り出しています。 また、while文では1行ずつ要素を取り出し、1列目の要素を出力しています。 この配列の表記法($row[0],$row[4]等)の他に、文字列による表記法も存在します。 これを連想配列といいます($row["angle"], $row["apple"]等)。 // テーブルの最初の要素を出力する while( ($row = $res- fetchRow(MDB2_FETCHMODE_ASSOC)) ) { print($row[ "id" ]. " br " ); } データベースの行の要素を連想配列で取り出す場合は、$res- fetchRow()の引数にMDB2_FETCHMODE_ASSOCをいれます。 引数を指定しない場合は、デフォルトとしてMDB2_FETCHMODE_ORDERED が入ります。 この他に、MDB2_FETCHMODE_OBJECTとすることでオブジェクトとして要素を取り出せます。 // テーブルの最初の要素を出力する while( ($row = $res- fetchRow(MDB2_FETCHMODE_OBJECT)) ) { print($row- id. " br " ); } データの書換え ?php // ライブラリの読込み require_once "MDB2.php" ; // データベースへ接続 $mdb2 = MDB2 connect( "mysql //ユーザ名 パスワード@ホスト/データベース名" ); // エラー処理 if(PEAR isError($mdb2)) { die($mdb2- getMessage()); } // データベースの内容を変更する $sql = "update データベース名 set カラム = " . $mdb2- quote(セットしたい値, 型 ) . "WHERE 条件"; $res = $mdb2- exec($sql); // エラー処理 if(PEAR isError($res)) { die($res- getMessage()); } // データベースへの接続を切る $mdb2- disconnect(); ? 検出数 ?php // ライブラリの読込み require_once "MDB2.php" ; // データベースへ接続 $mdb2 = MDB2 connect( "mysql //ユーザ名 パスワード@ホスト/データベース名" ); // エラー処理 if(PEAR isError($mdb2) ) { die($mdb2- getMessage() );} // クエリを実行 $res = $mdb2- query( "SELECT * FROM データベース名 WHERE 条件" ); // エラー処理 if(PEAR isError($res) ) { die($res- getMessage() );} // 検出数を出力 print( "条件に合致したものは" . $res- numRows() . "個でした" ); // データベースへの接続を切る $mdb2- disconnect();? 暗号化 hash関数 ?php // 文字列をハッシュ関数で暗号化 $hsh = hash( "アルゴリズム" , "文字列" ); // 結果を出力 print($hsh);? hashで使用できるアルゴリズムは、hash_algos()で見ることができる。 また、sha1やmd5については突破方法や効率の良い攻撃法が見つかっているため使用は避けた方がよい。 hash_algos()の出力結果は以下である。 Array ( [0] = md4 [1] = md5 [2] = sha1 [3] = sha256 [4] = sha384 [5] = sha512 [6] = ripemd128 [7] = ripemd160 [8] = whirlpool [9] = tiger128,3 [10] = tiger160,3 [11] = tiger192,3 [12] = tiger128,4 [13] = tiger160,4 [14] = tiger192,4 [15] = snefru [16] = gost [17] = adler32 [18] = crc32 [19] = crc32b [20] = haval128,3 [21] = haval160,3 [22] = haval192,3 [23] = haval224,3 [24] = haval256,3 [25] = haval128,4 [26] = haval160,4 [27] = haval192,4 [28] = haval224,4 [29] = haval256,4 [30] = haval128,5 [31] = haval160,5 [32] = haval192,5 [33] = haval224,5 [34] = haval256,5 ) crypt関数 ?php // 暗号化する $cpt = crypt( "文字列" , "暗号化用文字列" ); // 結果出力 print($cpt);? cryptは、暗号化用文字列saltを指定することで暗号化方式を決定します。 引数を指定しない場合は標準のDESベースの暗号化となります。 ですが、標準のDESベースの暗号化の場合、文字列は8文字までしか使用しないため、 最初の8文字が同じ文字列は同じ暗号文が出力されてしまうので注意が必要です。 暗号化方式は以下のとおりです。 暗号化文字列が2文字の場合、標準のDESベース暗号化方式 暗号化文字列が9文字の場合、拡張のDESベース暗号化方式 暗号化文字列が12文字で bold(){$1$}で始まる場合、MD5暗号化方式 暗号化文字列が16文字で bold(){$2$}または bold(){$2a$}で始まる場合、Blowfish暗号化方式 セッション セッションの基本 ?php // セッション開始 session_start(); // セッション変数に値を格納 $_SESSION[ "num" ] = 1; $_SESSION[ "char" ] = c ; $_SESSION[ "string" ] = "test" ; $_SESSION[ "bool" ] = true; // 変数の破棄 unset($_SESSION[ "char" ]); // セッション変数の破棄 session_unset(); // セッション終了 session_destroy();? セッションは、ページ間に渡って特定のユーザであることを認識させるために用いられます。 一般に、ユーザがログインしていることを認識させるために使われます。 Smarty Smarty基本 ?php // Smartyのパスは環境により変わります。(Pearからインストールした場合、このパスになります) require_once "Pearified/Smarty/smarty.class.php" ; // Smartyオブジェクトの生成 function CreateSmartyObj() { $smarty = new Smarty(); // パスの設定 $smarty- template_dir = "template" ; // テンプレートディレクトリのパス $smarty- compile_dir = "compile" ; // コンパイルディレクトリのパス return $smarty;} $smarty = CreateSmartyObj(); // Smartyオブジェクトの生成 // 変数testにアボーン(´・ェ・`)を入れる $smarty- assign( "test" , "アボーン(´・ェ・`)" ); // テンプレートファイルを画面出力する $smarty- display( "index.tpl" );? テンプレートファイルの中身 html body test is {$test}. /body /html 実行結果 test is アボーン(´・ェ・`)